package com.example.config;

import io.swagger.annotations.Api;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author lsc
 * @description
 * @date 2022/9/26 11:09
 * http://localhost:对应端口号/doc.html
 */
@Configuration
@EnableSwagger2
public class SwaggerTwoConfig {
    @Bean
    public Docket docket() {
        // 创建一个 swagger 的 bean 实例
        return new Docket(DocumentationType.SWAGGER_2)
                // 配置基本信息
                .apiInfo(apiInfo())
                ;
    }

    // 基本信息设置
    private ApiInfo apiInfo() {
        Contact contact = new Contact(
                "lmy", // 作者姓名
                "https://blog.csdn.net/xhmico?type=blog", // 作者网址
                "18239614201@163.com"); // 作者邮箱
        return new ApiInfoBuilder()
                .title("开封无敌暴龙战士") // 标题
                .description("你的java,我的java,好像不一样") // 描述
                .termsOfServiceUrl("https://www.baidu.com") // 跳转连接
                .version("1.0") // 版本
                .license("Swagger-的使用(详细教程)")
                .licenseUrl("https://blog.csdn.net/xhmico/article/details/125353535")
                .contact(contact)
                .build();
    }
    /*配置swagger的Docket实例*/
    @Bean
    public Docket getDocket(Environment environment){

        /*设置需要显示的swagger环境*/
//        Profiles profiles =Profiles.of("dev","test");
        /**/
//        boolean flag = environment.acceptsProfiles(profiles);

        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .groupName("阿波") //swagger信息(ApiInfo)中的name成员变量(不同的开发者信息就需要设置多个ApiInfo在不同的Docket实例中获取)
                .enable(false)
//                .enable(flag)
                .select()
                /*RequestHandlerSelectors：配置扫描接口的方式
                 * basePackage：指定扫描的包
                 * any：扫描全部
                 * none：不扫描
                 * withClassAnnotation：扫描类上的注解，参数为一个注解的反射对象
                 * withMethodAnnotation：扫描方法上的注解*/
                .apis(RequestHandlerSelectors.basePackage("com.example.controller"))
                /*paths()：过滤路径*/
//      .paths(PathSelectors.ant("/action"))
                .build();
    }


}

